大家在查找程式碼時可能會看到 if __name__=='__main__':
這段 code,這個是什麼意思呢?
如果你寫程式時都只使用一個 Python 檔,那就不需要用到這段程式碼,但是如果要引用別的檔案就有可能會用到了!
我這邊沿用前一天寫的費氏數列的程式來舉例,以下兩段程式碼的輸出結果都是一樣的,但是為什麼要再加一行 if __name__=='__main__':
呢?
# a.py
def Fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return Fibonacci(n - 2) + Fibonacci(n - 1)
for i in range(3):
print(Fibonacci(i))
# a.py
def Fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return Fibonacci(n - 2) + Fibonacci(n - 1)
if __name__=='__main__':
for i in range(3):
print(Fibonacci(i))
當我想要在別的檔案中使用我在 a.py
中定義的函式 Fibonacci(n)
時,如果在同一個目錄下有一個檔案 b.py
我把這個函式 Fibonacci(n)
引用至裡面。
底下的程式碼把 a.py
裡面的函式 Fibonacci
import。我想要得到費氏數列的第五項,預期得到的結果應該是 5,但是如果沒有加上 if __name__=='__main__':
的話,輸出為
# b.py
from a import Fibonacci
x = Fibonacci(5)
print(x)
main.py
被引用的同時又被執行一次了!
所以 if __name__=='__main__':
這段程式碼在程式被引用時不會執行,只要自己在執行的時候會呼叫,這樣就可以避免呼叫別的檔案的函式時又被執行到。
在 a.py
加入 if __name__=='__main__':
之後再看 b.py
的輸出就會變下面這樣了。
__name__
是 python 中內建、隱含的變數,不必宣告即可用,當程式是直接執行時,__name__
的值就是 __main__
,當程式是被引用時,__name__
的。
待續...